package challenge._21;

import java.util.Scanner;

/**
 * @author 挚爱之夕
 * @version 1.0
 * @implSpec
 * 某游戏公司设计了一个奖励活动，给N个用户(1≤N≤10^7)连续编号为1到N，依据用户的编号S发放奖励。
 * 发放奖励规则为：
 * 公司随机设定三个非零正整数x，y，z。
 * 如果S同时是x、y的倍数，奖励2张卡片；
 * 如果S同时是y、z的倍数，奖励4张卡片；
 * 如果S同时是x、z的倍数，奖励8张卡片；
 * 如果S同时是x，y，z的倍数奖励10张卡片；
 * 其他奖励1张卡片；
 * 以上奖励不能同时享受。满足多个奖励条件时，以最高奖励为准。
 * 求任意连续的L个用户，使得这L个用户得到的奖励总和最多，输出奖励总和的值。
 * 输入说明：第一行，输入N，L，以空格隔开；（1≤L≤N≤10^7）
 * 第二行，输入x，y，z，以空格隔开；（1≤x,y,z≤L）
 * 输出说明：符合条件的连续L个用户的奖励总和的最大值。
 * 输入样例：
 * 40 7
 * 3 5 2
 * 输出样例：24
 * @since 2022 - 10 - 24 - 23:28
 */
public class C {
    static int x, y, z;
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n, l;
        n = scanner.nextInt();
        l = scanner.nextInt();
        x = scanner.nextInt();
        y = scanner.nextInt();
        z = scanner.nextInt();
        int[] nums = new int[n + 1];
        for(int i = 1; i < n + 1; i++){
            nums[i] = getValue(i);
        }
        int sum = 0;
        int p = 1, max = -1;
        while(p <= l) sum += nums[p++];
        while(p <= n){
            max = Math.max(max, sum);
            sum -= nums[p - l];
            sum += nums[p];
            p++;
        }
        System.out.println(max);
    }
    public static int getValue(int num){
        boolean f1 , f2, f3;
        f1 = num % x == 0;
        f2 = num % y == 0;
        f3 = num % z == 0;
        if(f1 && f2 && f3){
            return 10;
        }
        if(f1 && f3){
            return 8;
        }
        if(f2 && f3){
            return 4;
        }
        if(f1 && f2){
            return 2;
        }
        return 1;
    }
}
